package controller;

import model.Deposito;
import model.DepositoCentral;
import beans.DepositoBean;
import beans.DepositoCentralBean;
import dao.HibernateDepositoDAO;
import dto.DepositoCentralDTO;
import dto.DepositoDTO;

public class AdministradorDeposito {
	private static AdministradorDeposito instancia;
	
	private AdministradorDeposito(){
		
	}
	public static AdministradorDeposito getInstancia(){
		if(instancia==null)
			instancia=new AdministradorDeposito();
		return instancia;
	}
	public DepositoBean fromModelTOBean(Deposito deposito) {
		DepositoBean depositoBean=null;
		if(deposito!=null){
			
				depositoBean=new DepositoBean();
				depositoBean.setDescripcion(deposito.getDescripcion());
				depositoBean.setIdDeposito(deposito.getId());
				depositoBean.setStock(AdministradorItemStock.getInstancia().fromModelTOBean(deposito.getStock()));
			
		}
		return depositoBean;
	}
	public Deposito fromDTOTOModel(DepositoDTO depositoDTO) {
		Deposito deposito=null;
		if(depositoDTO!=null){
			deposito=new Deposito();
			deposito.setDescripcion(depositoDTO.getDescripcion());
			deposito.setId(depositoDTO.getId());
			deposito.setStock(AdministradorItemStock.getInstancia().fromDTOTOModel(depositoDTO.getStock()));
		}
		return deposito;
	}
	
	public DepositoDTO fromModelTODTO(Deposito deposito) {
		DepositoDTO depositoDTO=null;
		if(deposito!=null){
			depositoDTO=new DepositoDTO();
			depositoDTO.setDescripcion(deposito.getDescripcion());
			depositoDTO.setId(deposito.getId());
			depositoDTO.setStock(AdministradorItemStock.getInstancia().fromModelTODTO(deposito.getStock()));
		}
		return depositoDTO;
	}
	
	public Deposito fromBeanTOModel(DepositoBean depositoBean) {
		Deposito deposito=null;
		if(depositoBean!=null){
		deposito=new Deposito();
		deposito.setDescripcion(depositoBean.getDescripcion());
		deposito.setId(depositoBean.getIdDeposito());
		deposito.setStock(AdministradorItemStock.getInstancia().fromBeanTOModel(depositoBean.getStock()));
		}
		return deposito;
	}
	public void grabarDepositoCentral(DepositoCentral dep) {
		DepositoCentralBean depb=(DepositoCentralBean) fromModelTOBeanCentral(dep);
		HibernateDepositoDAO.getInstancia().grabarDeposito(depb);
		
	}
	public DepositoCentralBean fromModelTOBeanCentral(DepositoCentral dep) {
		DepositoCentralBean depositoBean=null;
		if(dep!=null){
			
				depositoBean=new DepositoCentralBean();
				depositoBean.setDescripcion(dep.getDescripcion());
				depositoBean.setIdDeposito(dep.getId());
				depositoBean.setStock(AdministradorItemStock.getInstancia().fromModelTOBean(dep.getStock()));
				//depositoBean.setPedidos(AdministradorListaReposicion.getInstancia().fromModelTOBean(dep.getPedidos()));
			
		}
		return depositoBean;
	}
	public DepositoCentral fromBeanTOModelCentral(DepositoBean depositoBean) {
		DepositoCentral deposito=null;
		if(depositoBean!=null){
		deposito=new DepositoCentral();
		deposito.setDescripcion(depositoBean.getDescripcion());
		deposito.setId(depositoBean.getIdDeposito());
		deposito.setStock(AdministradorItemStock.getInstancia().fromBeanTOModel(depositoBean.getStock()));
		//deposito.setPedidos(AdministradorListaReposicion.getInstancia().fromBeanTOModel(((DepositoCentralBean) depositoBean).getPedidos()));
		}
		return deposito;
	}
	
	public DepositoCentral fromDTOTOModelCentral(DepositoDTO depositoDTO) {
		DepositoCentral deposito=null;
		if(depositoDTO!=null){
		deposito=new DepositoCentral();
		deposito.setDescripcion(depositoDTO.getDescripcion());
		deposito.setId(depositoDTO.getId());
		deposito.setStock(AdministradorItemStock.getInstancia().fromDTOTOModel(depositoDTO.getStock()));
		//deposito.setPedidos(AdministradorListaReposicion.getInstancia().fromDTOTOModel(((DepositoCentralDTO) depositoDTO).getPedidos()));
		}
		return deposito;
	}
	
	public DepositoCentralDTO fromModelTODTOCentral(Deposito deposito) {
		DepositoCentralDTO depositoDTO=null;
		if(deposito!=null){
			depositoDTO=new DepositoCentralDTO();
			depositoDTO.setDescripcion(deposito.getDescripcion());
			depositoDTO.setId(deposito.getId());
			depositoDTO.setStock(AdministradorItemStock.getInstancia().fromModelTODTO(deposito.getStock()));
			//depositoDTO.setPedidos(AdministradorListaReposicion.getInstancia().fromModelTODTO(((DepositoCentral) deposito).getPedidos()));
		}
		return depositoDTO;
	}
	
	
	public DepositoCentral buscarDepositoCentral(DepositoCentral dep) {
		DepositoCentralBean depb=fromModelTOBeanCentral(dep);
		depb=HibernateDepositoDAO.getInstancia().buscarDepositoCentral(depb);
		return fromBeanTOModelCentral(depb);
	}
	public void updateDepositoCentral(DepositoCentral dep) {
		HibernateDepositoDAO.getInstancia().updateDepositoCentral(fromModelTOBeanCentral(dep));
		
	}
	public void updateDeposito(Deposito deposito) {
		HibernateDepositoDAO.getInstancia().updateDeposito(fromModelTOBean(deposito));
	}
	public Deposito buscarDeposito(Deposito deposito) {
			DepositoBean depb=fromModelTOBean(deposito);
			depb=HibernateDepositoDAO.getInstancia().buscarDeposito(depb);
			return fromBeanTOModel(depb);		
	}
	public void mergeDepositoCentral(DepositoCentral deposito) {
		HibernateDepositoDAO.getInstancia().mergeDepositoCentral(fromModelTOBeanCentral(deposito));
	}
	
	public void mergeDeposito(Deposito deposito) {
		HibernateDepositoDAO.getInstancia().mergeDeposito(fromModelTOBean(deposito));
	}
}
